package com.jprocms.module.cms.dal.dataobject.channel;

import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jpro.framework.mybatis.core.dataobject.BaseDO;
import com.jprocms.module.cms.controller.admin.channel.dto.ChannelRuleDto;
import com.jprocms.module.cms.enums.EnumCommonStatus;
import com.jprocms.module.cms.framework.mybatisplus.ObjectJacksonTypeHandler;
import lombok.*;
import org.apache.commons.lang3.StringUtils;

import java.util.Optional;

import static com.jprocms.module.cms.constant.CmsSysConstants.CHANNEL_DEF_PAGE_SIZE;

/**
 * 栏目扩展配置 DO
 *
 * @author jprocms
 */
//mybatis-plus如果属性里指定了TypeHandler，需要开启autoResultMap=true，才会正常处理
@TableName(value = "cms_channel_ext", autoResultMap = true)
@KeySequence("cms_channel_ext_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Getter
public class ChannelExtDO extends BaseDO {

    /**
     * 栏目ID
     */
    @TableId
    private Long id;
    /**
     * 外部链接
     */
    private String outLinkUrl;
    /**
     * 是否新窗口打开（0-否 1-是）
     */
    private Boolean linkTarget;
    /**
     * 栏目页模板
     */
    private String tplPc;
    /**
     * 手机栏目页模板
     */
    private String tplMobile;

    /**
     * 内容页PC模板
     */
    private String contentTplPc;
    /**
     * 内容页手机模板
     */
    private String contentTplMobile;

    /**
     * 评论设置(1允许  0不允许评论)
     */
    private Boolean commentStatus;
    /**
     * SEO标题
     */
    private String seoTitle;
    /**
     * SEO关键字
     */
    private String seoKeyword;
    /**
     * SEO描述
     */
    private String seoDescription;
    /**
     * 分页大小
     */
    private Integer pageSize;
    /**
     * 新闻列表是否普通分页
     */
    private Boolean listPage;

    /**
     * 新闻列表图片
     */
    private String listImage;
    /**
     * 富文本内容
     */
    private String txt;
    /**
     * PC静态页文件
     */
    private String staticFile;
    /**
     * 手机端静态页文件
     */
    private String h5StaticFile;

    public String getContentTplMobile() {
        //mobile模板和pc模板相同，简化一个配置
        if(StringUtils.isBlank(contentTplMobile)){
            return contentTplPc;
        }
        return contentTplMobile;
    }

    public String getTplMobile() {
        //mobile模板和pc模板相同，简化一个配置
        if(StringUtils.isBlank(tplMobile)){
            return tplPc;
        }
        return tplMobile;
    }

    /**
     * 映射规则配置
     */
    @TableField(typeHandler = ObjectJacksonTypeHandler.class)
    private ChannelRuleDto collectRule;

    /**
     * 栏目扩展配置表初始默认配置数据
     */
    public void init() {
        setPageSize(Optional.ofNullable(getPageSize()).orElse(CHANNEL_DEF_PAGE_SIZE));
        setCommentStatus(Optional.ofNullable(getCommentStatus()).orElse(EnumCommonStatus.CLOSE.getStatus()));
        setListPage(Optional.ofNullable(getListPage()).orElse(EnumCommonStatus.OPEN.getStatus()));
        setLinkTarget(Optional.ofNullable(getLinkTarget()).orElse(EnumCommonStatus.OPEN.getStatus()));
    }

}
